﻿//----------------------------------------------------------------
// Desc: 
// Edit: ShowLong, http://blog.csdn.net/showlong
//
// Date Created: 2012-07-15
//
// Update Date : 
//
// Copyright (c) Fuel4D (http://www.fuel4d.com), All rights reserved.
//
//----------------------------------------------------------------
#pragma once


#pragma pack(push, 1)


struct FProperty
{
    DWORD _prop_vl;       // 属性的当前值

    FProperty(DWORD def = 0)
        :_prop_vl(def)
    {}
    // 设置属性
    FINLINE void SetProperty(DWORD prop){ _prop_vl = prop; }
    // 设置属性
    FINLINE void SetProperty(DWORD prop, bool vl){ if (vl) AddProperty(prop); else SubProperty(prop); }
    // 获取属性
    FINLINE DWORD GetProperty(){ return _prop_vl; }
    // 添加属性
    FINLINE void AddProperty(DWORD prop){ _prop_vl |= prop; }
    // 去掉属性
    FINLINE void SubProperty(DWORD prop){ _prop_vl &= ~prop; }
    // 测试属性
    FINLINE bool HasProperty(DWORD prop){ return (_prop_vl & prop) != 0; }

    FINLINE operator DWORD (){ return _prop_vl; }
};


#pragma pack(pop)